package io;

//IO代码示例--递归遍历目录的代码（经典面试题）
//查找硬盘上的文件位置
//给定一个文件名，去指定的目录中进行搜索，找到文件名匹配的结果，并打印出完整的路径

import java.io.File;
import java.util.Dictionary;
import java.util.Scanner;

public class OIDemo13 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要搜索的文件名:");
        String fileName=scanner.next();
        System.out.println("请输入要搜索的目录:");
        String rootPath=scanner.next();
        File rootFile=new File(rootPath);
        if(!rootFile.isDirectory()){
            System.out.println("输入路径错误");
            return;
        }
        //有了要搜索的路径，就可以按照递归的方式来搜索
        //知道了递归的起点，还需要知道要查询的文件名
        findDir(rootFile,fileName);
    }

    private static void findDir(File rootFile, String fileName) {
        //1.把当前目录中的文件和目录列举出来
        File[] files=rootFile.listFiles();
        if(files==null){
            //空的目录返回即可
            return;
        }
        //2.遍历上述files，判定每一个file是目录还是文件
        for(File f:files){
            if(f.isFile()){
                //普通文件，判定文件名是否是搜索文件
                if(fileName.equals(f.getName())) {
                    System.out.println("找到了符合要求的文件:" + f.getAbsolutePath());

                } else if (f.isDirectory()) {
                    //目录文件，需要进一步递归
                    findDir(f,fileName);

                }else{

                }
            }
        }
    }
}
